#ifndef TINX_STDIO_H
#define TINX_STDIO_H

#include <tinx/syscall.h>
#include <tinx/printf.h>
#include <tinx/stat.h>
#include <tinx/vsprintf.h>

#define NAME_LEN 256

enum file_flag
{
    O_RDONLY = 00,      // 只读方式
    O_WRONLY = 01,      // 只写方式
    O_RDWR = 02,        // 读写方式
    O_ACCMODE = 03,     // 文件访问模式屏蔽码
    O_CREAT = 00100,    // 如果文件不存在就创建
    O_EXCL = 00200,     // 独占使用文件标志
    O_NOCTTY = 00400,   // 不分配控制终端
    O_TRUNC = 01000,    // 若文件已存在且是写操作，则长度截为 0
    O_APPEND = 02000,   // 以添加方式打开，文件指针置为文件尾
    O_NONBLOCK = 04000, // 非阻塞方式打开和操作文件
    O_NOFOLLOW = 0400000,
    O_CLOEXEC = 02000000
};

typedef enum ftype_t
{
    F_ERR,
    F_FILE,
    F_DIR
} ftype_t;

typedef struct dentry_t
{
    u32 nr;
    u32 length;
    u16 namelen;
    char name[NAME_LEN];
} dentry_t;

#endif